package com.wch.clientdemo.module.base.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

/**
 * 
 * @author WanChengHe
 * @Date 20181114
 * 数据库工具类
 *
 */
public class SqliteUtil {

	private DbHelper dbHelper;
	
	private SQLiteDatabase db;

	//数据库工具类实例，采取单例模式
	private  static volatile SqliteUtil instance;
	
	private SqliteUtil(Context context) {
		dbHelper = new DbHelper(context);
	}
	
	/**
	 * 获取唯一的sqliteUtil实例对象
	 * @param context
	 * @return
	 */
	public static SqliteUtil getInstance(Context context){
		if(null == instance){
			//解析：为什么需要两次判断实例是否存在？ 因为当多个进程被锁在这，一个进了同步块之后，获取到了实例对象，出了这一同步块；
			//后面的又进入之后再判断一次，因此刚刚出去的那个获取到了实例，此时不为null,
			//如果不在同步块中再加一次判断，会造成一个获取到一个实例之后，后面一个进程又重新创建一个实例，也就起不到单例的作用
			synchronized (SqliteUtil.class) {
				if(null == instance){
					instance = new SqliteUtil(context);
				}
			}
		}
		return instance;
	}
	
	 public SQLiteDatabase getWriteDb() {
	        return db = dbHelper.getWritableDatabase();
	    }
	    
	 public SQLiteDatabase getReadDb() {
	    	return db = dbHelper.getReadableDatabase();
	    }
	
	
}
